package com.dao;

import com.domain.*;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 课程接口
 */
@Repository
public interface CourseDao {
    /**
     * 查询课程信息和进行模糊查询
     *      当name=null时，查询所有的课程信息
     *          实行分页查询：传入开始的索引start和页面大小pageSize
     *          role:当role=1时，表示查询的角色时教师，这时传入教师id查询课程
     *      当name有值时，进行模糊查询
     * @param name
     * @return
     */
    List<CourseVo> findAndSearchCourse(@Param("name") String name,@Param("start") int start,@Param("pageSize") int pageSize,@Param("role") int role,@Param("tid") int teacherID);
    /**
     * 当flag = 1时 , 查询学生已经通过的课程
     * 当flag = 0时 , 查询学生选修的所有课程
     * @param flag
     * @param studentID
     * @return
     */
    List<StuCourse> stuFindCourse(@Param("flag") int flag, @Param("id") int studentID,@Param("start") int start,@Param("pageSize") int pageSize);
    /**
     * 查询课程总数
     * @return
     */
    int totalCourse(@Param("tid") int tid,@Param("role") int role);
    /**
     *
     * @param id
     * @return
     */
    List<SelectCourse> findCourseByName(int id);
    /**
     * 添加课程信息
     * @param course
     */
    void addCourse(Course course);
    /**
     * 删除某课程
     * @param courseID
     */
    void deleteCourse(int courseID);
    /**
     * 通过课程号查询课程信息
     * @param courseID
     * @return
     */
    Course findCourseById(int courseID);
    /**
     * 修改课程信息
     * @param course
     */
    void updateCourse(Course course);

}
